/**
 * 用户相关 API 接口
 * 基于 http://wansantuoke.com/design.html 接口文档
 */

import { useUserStore } from '@/stores';
import { http } from 'uview-plus';
// ==================== 用户信息接口 ====================

/**
 * 获取会员中心信息
 * @returns {Promise} 返回会员信息
 */
export const getUserInfo = () => {
  return http.get('/api/user');
};

/**
 * 更新用户信息到stores
 * @param {Object} info 用户信息
 * @returns {Promise} 返回结果
 */
export const updateUserInfo = () => {
  return new Promise((resolve, reject) => {
    getUserInfo()
      .then((res) => {
        if (res.status === 200) {
          const userStore = useUserStore();
          userStore.setUserInfo(res.data);
          resolve(res.data);
        } else {
          reject(res.msg);
        }
      })
      .catch((error) => {
        console.error('获取用户信息失败:', error);
        reject(error);
      });
  });
};

/**
 * 修改邮箱
 * @param {Object} params 请求参数
 * @param {string} params.email 邮箱
 * @param {string} params.captcha 验证码
 * @returns {Promise} 返回结果
 */
export const changeEmail = (params) => {
  return http.post('/api/user/changeemail', params);
};

/**
 * 修改手机号
 * @param {Object} params 请求参数
 * @param {string} params.phone 手机号
 * @param {string} params.captcha 验证码
 * @returns {Promise} 返回结果
 */
export const changeMobile = (params) => {
  return http.post('/api/user/updatePhone', params);
};

/**
 * 重置密码
 * @param {Object} params 请求参数
 * @param {string} params.account 手机号/账号
 * @param {string} params.password 新密码
 * @param {string} params.captcha 验证码
 * @returns {Promise} 返回结果
 */
export const resetPassword = (params) => {
  return http.post('/api/register/reset', params);
};

/**
 * 修改用户信息_新
 * @param {Object} params 请求参数
 * @param {string} params.userInfo 用户信息JSON字符串
 * @returns {Promise} 返回结果
 */
export const updateUserInfoNew = (params, config) => {
  return http.post('/api/v2/user/user_update', params, config);
};

/**
 * 用户修改信息
 * @param {Object} params 请求参数
 * @param {string} params.avatar 用户头像
 * @param {string} params.nickname 用户昵称
 * @returns {Promise} 返回结果
 */
export const editUserInfo = (params, config) => {
  return http.post('/api/user/edit', params, config);
};

/**
 * 实名认证提交
 * @param {Object} params 请求参数
 * @param {string} params.country_region 国家地区
 * @param {string} params.id_type 证件类型: 1身份证, 2护照, 3驾驶证, 4其他
 * @param {string} params.id_number 证件号码
 * @param {string} params.full_name 证件姓名
 * @param {string} params.id_front_image 证件正面图片地址
 * @param {string} params.id_back_image 证件反面图片地址
 * @param {string} params.id_handheld_image 手持证件图片地址
 * @param {string} [params.id_verify_status] 证件验证状态: 0未验证, 1验证中, 2已验证, 3验证失败
 * @param {string} [params.id_verify_time] 证件验证时间
 * @param {string} [params.id_verify_remark] 验证备注
 * @returns {Promise} 返回结果
 */
export const submitIdentityVerification = (params, config) => {
  return http.post('/api/user/shim', params, config);
};

/**
 * 实名认证复现
 * @param {Object} params 请求参数
 * @param {string} [params.user_id] 用户ID，不传则获取当前用户信息
 * @returns {Promise} 返回实名认证信息
 */
export const getIdentityVerification = (params, config) => {
  return http.get('/api/user/shimf', params, config);
};

/**
 * 获取用户信息
 * @param {Object} params 请求参数
 * @param {string} [params.user_id] 用户ID，不传则获取当前用户信息
 * @returns {Promise} 返回用户信息
 */
export const getUserBaseInfo = (params, config) => {
  return http.post('/api/getUserBaseInfo', params, config);
};
/**
 * @description 转账
 * @param {Object} data 转账参数
 * @param {String} data.number 转账数量
 * @param {String} data.to_uid 收款人用户ID
 * @param {String} data.mark 转账备注
 * @param {String} data.pwd 安全密码
 * @param {String} data.pwdtype 1 需要密码
 *
 */
export const tradeMoney = (data, config) => {
  return http.post('/api/user/trade_money', data, config);
};

/**
 * 获取账单列表
 * @param {Object} params 请求参数
 * @param {string} params.category 账单类型: now_money-余额账单, score-积分账单, integral-积分账单
 * @param {number} [params.limit=10] 每页数量，范围1-100
 * @param {number} [params.page=1] 页码，从1开始
 * @returns {Promise} 返回账单列表信息
 */
export const getBillList = (params, config) => {
  return http.post('/api/user/get_bill_list', params, config);
};

/**
 * 线下充值申请
 * @param {Object} params 请求参数
 * @param {number} params.price 充值金额
 * @param {number} params.rechar_id 充值ID，固定传0
 * @param {number} params.type 充值类型，固定传1
 * @param {string} params.from 充值来源，固定传"xianxia"
 * @param {Array} params.pics 充值凭证图片数组，支持多图上传
 * @param {string} params.name 充值人姓名
 * @returns {Promise} 返回充值申请结果
 */
export const submitOfflineRecharge = (params, config) => {
  return http.post('/api/xianxiarecharge/xianxiarecharge', params, config);
};
/**
 * 提现申请界面数据
 * @param {Object} params 请求参数
 * @returns {Promise} 返回提现申请界面数据
 */
export const getWithdrawApplyData = (params, config) => {
  return http.get('/api/extract/bank', { params, ...config });
};
/**
 * 提现申请
 * @param {Object} params 请求参数
 * @param {string} params.money 提现金额
 * @param {string} params.Address 钱包地址
 * @param {number} params.extract_type 提现类型: 4-USDT
 * @param {string} params.make 备注
 * @returns {Promise} 返回提现申请数据
 */
export const submitWithdraw = (params, config) => {
  return http.post('/api/extract/cash', params, config);
};
/**
 * 提现记录
 * @param {Object} params 请求参数
 * @param {number} params.page 页码
 * @param {number} params.limit 每页数量
 * @returns {Promise} 返回提现记录数据
 */
export const getWithdrawRecord = (params, config) => {
  return http.get('/api/spread/commission/4', { params, ...config });
};
/**
 * 交易记录
 * @param {Object} params 请求参数
 * @param {number} params.page 页码
 * @param {number} params.limit 每页数量
 * @param {string} params.category 账单类型: now_money-余额账单 固定值
 * @returns {Promise} 返回交易记录数据
 */
export const getTransactionRecord = (params, config) => {
  return http.post('/api/user/get_bill_list', params, config);
};
/**
 * 获取充值配置
 * @param {Object} params 请求参数
 * @returns {Promise} 返回充值配置数据
 */
export const getRechargeConfig = (params, config) => {
  return http.get('/api/user/payaddress', { params, ...config });
};
